#include "wx/wxprec.h"
#include "wx/xrc/xh_text.h"

IMPLEMENT_DYNAMIC_CLASS( wxTextCtrlXmlHandler, wxXmlResourceHandler )

wxTextCtrlXmlHandler::wxTextCtrlXmlHandler() : wxXmlResourceHandler() {
  XRC_ADD_STYLE( wxTE_NO_VSCROLL );
  XRC_ADD_STYLE( wxTE_AUTO_SCROLL );
  XRC_ADD_STYLE( wxTE_PROCESS_ENTER );
  XRC_ADD_STYLE( wxTE_PROCESS_TAB );
  XRC_ADD_STYLE( wxTE_MULTILINE );
  XRC_ADD_STYLE( wxTE_PASSWORD );
  XRC_ADD_STYLE( wxTE_READONLY );
  XRC_ADD_STYLE( wxHSCROLL );
  XRC_ADD_STYLE( wxTE_RICH );
  XRC_ADD_STYLE( wxTE_RICH2 );
  XRC_ADD_STYLE( wxTE_AUTO_URL );
  XRC_ADD_STYLE( wxTE_NOHIDESEL );
  XRC_ADD_STYLE( wxTE_LEFT );
  XRC_ADD_STYLE( wxTE_CENTRE );
  XRC_ADD_STYLE( wxTE_RIGHT );
  XRC_ADD_STYLE( wxTE_DONTWRAP );
  XRC_ADD_STYLE( wxTE_LINEWRAP );
  XRC_ADD_STYLE( wxTE_CHARWRAP );
  XRC_ADD_STYLE( wxTE_WORDWRAP );
  AddWindowStyles();
}

wxObject *wxTextCtrlXmlHandler::DoCreateResource() {
  XRC_MAKE_INSTANCE( text, wxTextCtrl )
  text->Create( m_parentAsWindow,
                GetID(),
                GetText( wxT( "value" ) ),
                GetPosition(), GetSize(),
                GetStyle(),
                wxDefaultValidator,
                GetName() );
  SetupWindow( text );
  if( HasParam( wxT( "maxlength" ) ) ) {
    text->SetMaxLength( GetLong( wxT( "maxlength" ) ) );
  }
  return text;
}

bool wxTextCtrlXmlHandler::CanHandle( wxXmlNode *node ) {
  return IsOfClass( node, wxT( "wxTextCtrl" ) );
}
